package com.mdb.open.epay.feign.dto;

import com.mdb.bc.api.data.DataObjectBase;
import com.mdb.open.epay.enums.type.AccountEnum;
import com.mdb.open.epay.enums.type.FeeAccountEnum;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;

/**
 * @author : yu.zunlong
 * @description : 一对一公共记账接口
 * @date : 2019/7/23
 */
@Data
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
public class HST_0351430_Req extends DataObjectBase {
	private static final long serialVersionUID = 5388874388909941124L;

	@ApiModelProperty(value = "起息日期，不输入时则默认为核心当前会计日期，不可大于核心会计日期")
	private String valDt;

	@NotBlank(message = "交易币种必填" )
	@ApiModelProperty(value = "交易币种,必须与借方货币或贷方货币中的一个相同")
	private String ccy;

	@NotBlank(message = "交易金额必填")
	@ApiModelProperty(value = "交易金额")
	private String amt;

	@NotNull(message = "借方账号类型必填")
	@ApiModelProperty(value = "借方账号类型")
	private AccountEnum dacTyp;

	@ApiModelProperty(value = "借方账号,现金时不可输存款账户、同业账户、科目及卡时必输")
	private String drAc;

	@NotBlank(message = "借方货币必填")
	@ApiModelProperty(value = "借方货币,借方账号对应的货币，如果交易货币和借方货币不一致时，自动兑换成借方货币入账")
	private String drCcy;

	@ApiModelProperty(value = "借方核算机构")
	private String drBr;

	@ApiModelProperty(value = "支付凭证号码,账户类型为活期账户或者卡时选输，其他不可输,用于凭证付款时")
	private String chqNo;

	@ApiModelProperty(value = "支付凭证签发日期,账户类型为活期账户或者卡时选输，其他不可输,用于凭证付款时")
	private String chqIsdt;

	@ApiModelProperty(value = "冻结编号,冻结扣划时必须输入，其他情况不输入")
	private String holNo;

	@NotNull(message = "贷方账号类型必填")
	@ApiModelProperty(value = "贷方账号类型")
	private AccountEnum cacTyp;

	@ApiModelProperty(value = "贷方账号,现金时不可输,存款账户、同业账户、科目及卡时必输")
	private String crAc;

	@ApiModelProperty(value = "贷方户名,贷方账户为活期账户（卡），如果需要验证户名时输入，其他不可输")
	private String crNm;

	@NotBlank(message = "贷方货币必填")
	@ApiModelProperty(value = "贷方货币,贷方账号对应的货币，如果交易货币和贷方货币不一致时，自动兑换成贷方货币入账")
	private String crCcy;

	@ApiModelProperty(value = "贷方核算机构")
	private String crBr;

	@ApiModelProperty(value = "扣费代码1")
	private String feeCd1;

	@ApiModelProperty(value = "费用账号类型1,输入扣费代码1时必须输入，否则不可输入")
	private FeeAccountEnum feeAct1;

	@ApiModelProperty(value = "扣费账号1,输入扣费代码1时且存款账户、同业账户及卡时必输，其他不可输")
	private String feeAc1;

	@ApiModelProperty(value = "收费机构1")
	private String feeBr1;

	@ApiModelProperty(value = "扣费币种1,输入扣费代码1时必输，否则不可输")
	private String feeCcy1;

	@ApiModelProperty(value = "收费金额1,输入扣费代码1时必输，否则不可输")
	private String feeAmt1;

	@ApiModelProperty(value = "扣费代码2")
	private String feeCd2;

	@ApiModelProperty(value = "费用账号类型2,输入扣费代码2时必须输入，否则不可输入")
	private FeeAccountEnum feeAct2;

	@ApiModelProperty(value = "扣费账号2,输入扣费代码2时且存款账户、同业账户及卡时必输，其他不可输")
	private String feeAc2;

	@ApiModelProperty(value = "收费机构2")
	private String feeBr2;

	@ApiModelProperty(value = "扣费币种2,输入扣费代码2时必输，否则不可输")
	private String feeCcy2;

	@ApiModelProperty(value = "收费金额2,输入扣费代码2时必输，否则不可输")
	private String feeAmt2;

	@ApiModelProperty(value = "扣费代码3")
	private String feeCd3;

	@ApiModelProperty(value = "费用账号类型3,输入扣费代码3时必须输入，否则不可输入")
	private FeeAccountEnum feeAct3;

	@ApiModelProperty(value = "扣费账号3,输入扣费代码3时且存款账户、同业账户及卡时必输，其他不可输")
	private String feeAc3;

	@ApiModelProperty(value = "收费机构3")
	private String feeBr3;

	@ApiModelProperty(value = "扣费币种3,输入扣费代码3时必输，否则不可输")
	private String feeCcy3;

	@ApiModelProperty(value = "收费金额3,输入扣费代码3时必输，否则不可输")
	private String feeAmt3;

	@ApiModelProperty(value = "备注")
	private String remark;

	@ApiModelProperty(value = "附言")
	private String narr;

	@ApiModelProperty(value = "对方账号,借贷双方都为行内账户时无需填写（预留）,借贷有一方是卡或者存款时，根据实际需要填写")
	private String othAc;

	@ApiModelProperty(value = "对方户名,借贷双方都为行内账户时无需填写（预留）,借贷有一方是卡或者存款时，根据实际需要填写")
	private String othNm;

	@ApiModelProperty(value = "对方行号,借贷双方都为行内账户时无需填写（预留）,借贷有一方是卡或者存款时，根据实际需要填写")
	private String othBk;
}
